package boot.spring.service.impl;



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import boot.spring.mapper.LoginMapper;
import boot.spring.po.Staff;
import boot.spring.service.LoginService;

/**
 * @Transactional明式事务：
 * propagation属性用来枚举事务的传播行为，所谓事务传播行为就是多个事务方法相互调用时，事务如何在这些方法间传播。Spring支持7种事务传播行为，默认为REQUIRED。
 * REQUIRED是常用的事务传播行为，如果当前没有事务，就新建一个事务，如果已经存在一个事务中，加入到这个事务中。
 * isolation事务隔离级别，
 * DEFAULT为数据源（数据库）的默认隔离级别，以目前常用的MySQL为例，默认的隔离级别通常为REPEATABLE_READ。
 * timeout:事物超时设置,默认30s
 */
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,timeout=5)
@Service("loginservice")
public class LoginServiceImpl implements LoginService{
	@Autowired
	private LoginMapper loginmapper;

	/**
	 * 查密码，通过用户名
	 * @param name
	 * @return
	 */
	@Override
    public String getpwdbyname(String name) {
		Staff s=loginmapper.getpwdbyname(name);
		if(s!=null) {
			return s.getPassword();
		} else {
			return null;
		}
	}

	/**
	 * 查id，通过username
	 * @param name
	 * @return
	 */
	@Override
	public Long getUidbyname(String name) {
		Staff s=loginmapper.getpwdbyname(name);
		if(s!=null) {
			// 返回查询到的id
			return (long) s.getStaff_id();
		} else {
			return null;
		}
	}

	/**
	 * 通过id查找用户名
	 * @param id
	 * @return
	 */
	@Override
	public String getnamebyid(long id) {
		Staff s=loginmapper.getnamebyid(id);
		if(s!=null) {
			// 返回用户名
			return s.getUsername();
		} else {
			return null;
		}
	}
	
	

}
